Redes de circuitos virtuales
Similar a lo que ocurría en la capa de transporte, la capa de red también puede ofrecer servicios orientados a conexión y servicios no orientados a conexión. En este caso, estos servicios son entre hosts, provistos a la capa de transporte por la capa de red.
En el caso de las Redes de Datagramas, se ofrece servicios de capa de red no orientados a conexión, mientras que las redes llamadas Redes de Circuito Virtual ofrecen servicios orientados a conexión. Estos servicios son implementados en el núcleo de la red.
Como mencionamos anteriormente, los servicios ofrecidos por estas redes son orientados a conexión. Estas conexiones se llaman circuitos virtuales (VC).
Se realizan llamadas de setup, terminando cada llamada antes que los datos puedan fluir. Cada paquete lleva un identificador de VC, que no es la dirección del host de destino.
Cada Router en el camino entre la fuente y el destino mantiene el estado para cada conexión que pase por él.
El enlace y los recursos del router (ancho de banda, buffers), deben ser asicados al VC (recursos dedicados = servicios predecibles).
Un VC consiste de:
Un paquete perteneciente a un VC lleva en su encabezado un número de VC. Dado que un circuito virtual puede tener múltiples números de VC en cada enlace, cada router debe reemplazar el número de VC de cada paquete al número nuevo, obtenido de la tabla de Forwarding.
En el caso de las redes de circuitos virtuales, y a diferencia de la capa de transporte, los routers a lo largo del camino entre los end systems están involucrados en el setup del VC, y cada Router está totalmente consiente de todos los VC que pasan por él.
Como no es orientado a conexión, este modelo de servicio no utiliza llamadas de setup en la capa de red. Cada vez que un end system quiere enviar un paquete, lo estampa con la dirección del end system de destino y luego lo “empuja” hacia la red.
Como un paquete es transmitido desde una fuente hacia un destino, pasa por varios routers. Cada uno de estos utiliza la dirección de destino para enviar el paquete.
Específicamente, cada router tiene una tabla de Forwarding que mapea direcciones a interfaces de enlace. De esta forma, cuando un paquete llega, el router utiliza la información de esta tabla para enviar el paquete por la interfaz correcta.
Claramente, para este ejemplo no es necesario tener 4 mil millones de entradas en la tabla de Forwarding del router. Podríamos por ejemplo tener la siguiente tabla de Forwarding:
Con este estilo de tabla de Forwarding, el router empareja un prefijo de las direcciones de destino de los paquetes con las entradas en la tabla; si hay un match, el router envía el paquete al link asociado con el match.
Por ejemplo, supongamos que la dirección de destino del paquete es 11001000 00010111 00010110 10100001; dado que el prefijo de 21 bits empareja la primera entrada de la tabla, el router envía el paquete a la interfaz de enlace 0. En caso de no haber match, envía por la interfaz 3.
En caso de que haya más de un match, se utiliza la regla del prefijo más largo emparejado, que encuentra la entrada más larga que empareja en la tabla y envía el paquete por la interfaz asociada con el prefijo más largo emparejado.